﻿using System;
using System.ComponentModel;
using System.Text;
using System.ServiceModel;
using Sinacor.Servico.Bovespa.Cliente.BusinessEntity;
using System.Collections.Generic;
using Sinacor.Infra.Service.Security.Services;
using Sinacor.Servico.Bovespa.Cliente.Service;
using Sinacor.Infra.Common.Validation;

//Task : 5435
//Data : 27/02/2009Correspondente
//Autor: Andre

namespace Sinacor.Servico.Bovespa.Cliente.Service.ServiceImplementation
{
    [SinacorServiceBehavior]
    public class Correspondente : Sinacor.Servico.Bovespa.Cliente.Service.ServiceContract.ICorrespondente
    {

/// <summary>
/// Retornar a lista de Correspondente
/// </summary>
/// <returns></returns>
        //public List<DataContract.Response.CorrespondenteResponse> ConsultarCorrespondentes (Sinacor.Servico.Bovespa.Cliente.Service.DataContract.Request.FiltroCorrespondenteRequest request)
        //{
           
        //    return (new ServiceImplementation.Translator.BusinessEntityToDataContract.Correspondente().ToCorrespondenteResponse(new  BusinessLogic.Correspondente().ConsultarCorrespondentes( new  Sinacor.Servico.Bovespa.Cliente.Service.ServiceImplementation.Translator.DataContractToBusinessEntity.Correspondente().ToFiltroCorrespondente(request)))); 
        //}


        /// <summary>
        /// Retornar a lista de Correspondente
        /// </summary>
        /// <returns></returns>
        #region ICorrespondente Members

        /// <summary> 
        ///  Efetua alteração dos dados de um correspondente (Serviço) 
        /// </summary> 
        /// <tables> 
        /// TBOCORRESP 
        /// </tables> 
        /// <param name="request">CorrespondenteRequest</param> 
        /// <returns></returns> 
        /// <summary>

        public void AlterarCorrespondente(Sinacor.Servico.Bovespa.Cliente.Service.DataContract.Request.CorrespondenteRequest correspondente)
        {
            new BusinessLogic.Correspondente().AlterarCorrespondente(new Translator.DataContractToBusinessEntity.Correspondente().ToCorrespondente(correspondente));
        }
        /// <summary> 
        ///  Efetua alteração dos dados de uma lista de correspondentes. (Serviço) 
        /// </summary> 
        /// <tables> 
        /// TBOCORRESP 
        /// </tables> 
        /// <param name="request">CorrespondenteRequest</param> 
        /// <returns></returns> 
        /// <summary>

        public void AlterarCorrespondentes(List<Sinacor.Servico.Bovespa.Cliente.Service.DataContract.Request.CorrespondenteRequest> correspondentes)
        {
            new BusinessLogic.Correspondente().AlterarCorrespondentes(new Translator.DataContractToBusinessEntity.Correspondente().ToCorrespondentes(correspondentes));
        }

        /// <summary> 
        ///  Exclui fisicamente um correspondente através de seu codigo. (Serviço) 
        /// </summary> 
        /// <tables> 
        /// TBOCORRESP 
        /// </tables> 
        /// <param name="request">FiltroCorrespondenteChaveRequest</param> 
        /// <returns></returns> 
        /// <summary>

        public void ExcluirCorrespondente(Sinacor.Servico.Bovespa.Cliente.Service.DataContract.Request.FiltroCorrespondenteChaveRequest filtroCorrespondente)
        {
            new BusinessLogic.Correspondente().ExcluirCorrespondente(new Translator.DataContractToBusinessEntity.Correspondente().ToFiltroCorrespondenteChave(filtroCorrespondente));
        }
        /// <summary> 
        ///  Exclui fisicamente uma lista de correspondentes através de seu codigo.< (Serviço) 
        /// </summary> 
        /// <tables> 
        /// TBOCORRESP 
        /// </tables> 
        /// <param name="request">FiltroCorrespondenteChaveRequest(Parâmetro)</param> 
        /// <returns></returns> 
        /// <summary>


        public void ExcluirCorrespondentes(List<Sinacor.Servico.Bovespa.Cliente.Service.DataContract.Request.FiltroCorrespondenteChaveRequest> filtroCorrespondentes)
        {
            new BusinessLogic.Correspondente().ExcluirCorrespondentes(new Translator.DataContractToBusinessEntity.Correspondente().ToFiltroCorrespondenteChave(filtroCorrespondentes));
        }
        /// <summary> 
        ///  Método para operação conjunta de inclusão, alteração e execlusão a partir de listas de correspondentes.O comportamento é transacional e efetua o processamento para cada lista fornecida. (Serviço) 
        /// </summary> 
        /// <tables> 
        /// TBOCORRESP 
        /// </tables> 
        /// <param name="request">CorrespondenteRequest</param> 
        /// <returns></returns> 
        /// <summary>

        public void ExecutarTransacoes(List<Sinacor.Servico.Bovespa.Cliente.Service.DataContract.Request.CorrespondenteRequest> inclusoes, List<Sinacor.Servico.Bovespa.Cliente.Service.DataContract.Request.FiltroCorrespondenteChaveRequest> exclusoes, List<Sinacor.Servico.Bovespa.Cliente.Service.DataContract.Request.CorrespondenteRequest> alteracoes)
        {
            Sinacor.Servico.Bovespa.Cliente.Service.ServiceImplementation.Translator.DataContractToBusinessEntity.Correspondente translator = new Sinacor.Servico.Bovespa.Cliente.Service.ServiceImplementation.Translator.DataContractToBusinessEntity.Correspondente();
            new Sinacor.Servico.Bovespa.Cliente.BusinessLogic.Correspondente().ExecutarTransacoes(translator.ToCorrespondentes(inclusoes), translator.ToFiltroCorrespondenteChave(exclusoes), translator.ToCorrespondentes(alteracoes));
        }
        /// <summary> 
        ///  Inclui fisicamente um correspondente.<b>Tabelas relacionadas. (Serviço) 
        /// </summary> 
        /// <tables> 
        /// TBOCORRESP 
        /// </tables> 
        /// <param name="request">CorrespondenteRequest</param> 
        /// <returns></returns> 
        /// <summary

        public void IncluirCorrespondente(Sinacor.Servico.Bovespa.Cliente.Service.DataContract.Request.CorrespondenteRequest correspondente)
        {
            new BusinessLogic.Correspondente().IncluirCorrespondente(new Translator.DataContractToBusinessEntity.Correspondente().ToCorrespondente(correspondente));
        }
        /// <summary> 
        ///  Inclui fisicamente uma lista de correspondentes. (Serviço) 
        /// </summary> 
        /// <tables> 
        /// TBOCORRESP 
        /// </tables> 
        /// <param name="request">CorrespondenteRequest</param> 
        /// <returns></returns> 
        /// <summary            

        public void IncluirCorrespondentes(List<Sinacor.Servico.Bovespa.Cliente.Service.DataContract.Request.CorrespondenteRequest> correspondentes)
        {
            new BusinessLogic.Correspondente().IncluirCorrespondentes(new Translator.DataContractToBusinessEntity.Correspondente().ToCorrespondentes(correspondentes));
        }
        /// <summary> 
        ///  Faz uma pesquisa em uma lista de correspondentes. (Serviço) 
        /// </summary> 
        /// <tables> 
        /// TBOCORRESP 
        /// </tables> 
        /// <param name="request">FiltroCorrespondenteRequest (Parâmetro)</param> 
        /// <returns></returns> 
        /// <summary

        public List<DataContract.Response.CorrespondenteResponse> ConsultarCorrespondentes(DataContract.Request.FiltroCorrespondenteRequest filtroCorrespondente)
        {
            return new Translator.BusinessEntityToDataContract.Correspondente().ToCorrespondenteResponse(new BusinessLogic.Correspondente().ConsultarCorrespondentes(new Translator.DataContractToBusinessEntity.Correspondente().ToFiltroCorrespondente(filtroCorrespondente)));
        }
        #endregion

    }
}
